// utils/request.js
const { environment } = require('@/config/environment');
const request = {
  // 默认基础 URL（可选）
  baseURL: environment.baseURL, // 替换为你自己的域名

  // 封装 POST 请求
  post(url, params = {}, config = {}) {
    return new Promise((resolve, reject) => {
      uni.request({
        url: this.baseURL + url,
        method: 'POST',
        data: params,
        header: {
          'content-type': 'application/json', // 默认 JSON 格式
          ...config.header
        },
        success(res) {
          if (res.statusCode >= 200 && res.statusCode < 300) {
            resolve(res.data);
          } else {
            reject(`网络请求失败，状态码：${res.statusCode}`);
          }
        },
        fail(err) {
          reject('请求失败：' + JSON.stringify(err));
        }
      });
    });
  },

  // 封装 GET 请求
  get(url, params = {}, config = {}) {
    return new Promise((resolve, reject) => {
      uni.request({
        url: this.baseURL + url,
        method: 'GET',
        data: params,
        header: {
          'content-type': 'application/json',
          ...config.header
        },
        success(res) {
          if (res.statusCode >= 200 && res.statusCode < 300) {
            resolve(res.data);
          } else {
            reject(`网络请求失败，状态码：${res.statusCode}`);
          }
        },
        fail(err) {
          reject('请求失败：' + JSON.stringify(err));
        }
      });
    });
  },

  // 封装 PUT 请求
  put(url, params = {}, config = {}) {
    return new Promise((resolve, reject) => {
      uni.request({
        url: this.baseURL + url,
        method: 'PUT',
        data: params,
        header: {
          'content-type': 'application/json',
          ...config.header
        },
        success(res) {
          if (res.statusCode >= 200 && res.statusCode < 300) {
            resolve(res.data);
          } else {
            reject(`网络请求失败，状态码：${res.statusCode}`);
          }
        },
        fail(err) {
          reject('请求失败：' + JSON.stringify(err));
        }
      });
    });
  },

  // 封装 DELETE 请求
  delete(url, params = {}, config = {}) {
    return new Promise((resolve, reject) => {
      uni.request({
        url: this.baseURL + url,
        method: 'DELETE',
        data: params,
        header: {
          'content-type': 'application/json',
          ...config.header
        },
        success(res) {
          if (res.statusCode >= 200 && res.statusCode < 300) {
            resolve(res.data);
          } else {
            reject(`网络请求失败，状态码：${res.statusCode}`);
          }
        },
        fail(err) {
          reject('请求失败：' + JSON.stringify(err));
        }
      });
    });
  }
};

export default request;